iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
Web 3

Smart-Contract Language: Move系列 第 20

Day 20 Advanced Topics: Resource part 4

  • 分享至 

  • xImage
  •  

獲取和銷毀資源

使用 move_from 從帳戶中獲取資源,並 destroy 該內容。

schema

native fun move_from<T: key>(addr: address): T;

example

address 0x7 {
    module Collection {

    use 0x1::Vector;
    use 0x1::Signer;

    struct Item has drop {}

    struct Collection has key {
        items: vector<Item>
    }

    public fun size(account: &signer): u64 acquires Collection {

		// 該資源不再附加在 account 上
        let collection = move_from<Collection>(Signer::address_of(account));

		// 這邊必須使用 resource value, 同時確保 items 擁有 drop 能力
        let Collection { items: _ } = collection;

        // 完成,該資源被成功銷毀
    }

}
}

在考慮資源時,必須解構或作為返回值傳遞。但是即使傳遞到 script, 能操作的選項也是有限的,因為 scrip 上下文不允許對結構或資源做任何事情,除非將其傳遞到其他地方。
這一系列的範例在 Global Storage 章節其實已經介紹過每個 schema 能力,搭配著一起看和多幾次練習就可以靈活運用和設計 Module。
讓我們 Move to Day 21


上一篇
Day 19 Advanced Topics: Resource part 3
下一篇
Day 21 Advanced Topics: Uses and Aliases
系列文
Smart-Contract Language: Move30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言